Estrutura T> System.Nullable<
Este artigo fornece observações complementares à documentação de referência para essa API.
A Nullable classe representa um tipo de valor que pode ser atribuído null
.
Um tipo é considerado anulável se puder ser atribuído a um valor ou puder ser atribuído null
, o que significa que o tipo não tem valor algum. Por padrão, todos os tipos de referência, como String, são anuláveis, mas todos os tipos de valor, como Int32, não são.
Em C# e Visual Basic, você marca um tipo de valor como anulável usando a ?
notação após o tipo de valor. Por exemplo, int?
em C# ou Integer?
no Visual Basic declara um tipo de valor inteiro que pode ser atribuído null
a arquivos .
A Nullable<T> estrutura dá suporte ao uso apenas de um tipo de valor como um tipo anulável porque os tipos de referência são anuláveis por design.
A Nullable aula fornece suporte complementar para a Nullable<T> estrutura. A Nullable classe dá suporte à obtenção do tipo subjacente de um tipo anulável e a operações de comparação e igualdade em pares de tipos anuláveis cujo tipo de valor subjacente não dá suporte a operações genéricas de comparação e igualdade.
Propriedades fundamentais
Os dois membros fundamentais da Nullable<T> estrutura são as HasValue propriedades e Value . Se a HasValue propriedade de um Nullable<T> objeto for true
, o valor do objeto poderá ser acessado com a Value propriedade. Se a HasValue propriedade for false
, o valor do objeto será indefinido e uma tentativa de acessar a Value propriedade lançará um InvalidOperationException.
Conversão boxing e unboxing
Quando um tipo anulável é convertido, o Common Language Runtime encaixota automaticamente o valor subjacente do Nullable<T> objeto, não o Nullable<T> objeto em si. Ou seja, se a HasValue propriedade for true
, o conteúdo da Value propriedade será encaixotado. Quando o valor subjacente de um tipo anulável é desempacotado, o Common Language Runtime cria uma nova Nullable<T> estrutura inicializada para o valor subjacente.
Se a HasValue
propriedade de um tipo anulável for false
, o resultado de uma operação de boxing será null
. Consequentemente, se um tipo anulável em caixa for passado para um método que espera um argumento de objeto, esse método deverá ser preparado para lidar com o caso em que o argumento é null
. Quando null
é desempacotado em um tipo anulável, o Common Language Runtime cria uma nova Nullable<T> estrutura e inicializa sua HasValue
propriedade como false
.
Componentes do tempo de execução do Windows
Você pode incluir um Nullable<T> tipo como membro de uma estrutura exportada em uma biblioteca WinMD.